我們要定義URL的模式,URL模式描述了URL是如何設計出來,讓Django知道怎麼把瀏覽器的請求和網站URL配對起來,每個URL都會映對到特定的view,view函式會擷取和處理網頁所需要的資料,視圖函式一般會呼叫一個template,它會建置瀏覽器能讀取的網頁
使用者利用再瀏覽器中輸入URL和點按連結來請求網頁,所以我們要確定專案需要哪些專案URL來配合,首先我們要把基本的URL映對到學習日誌主題
開啟learning_log
資料夾中的urls.py檔,我們會看到在urlpatterns變數存放了專案中的應用程式URL,在這裡含有admin.site.urls模組,我們要新增learning_logs.urls模組,如下
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
# 以下為新增程式碼
url(r'', include('learning_logs.urls', namespace='learning_logs')), # 這行程式碼包含有namespace引數讓我們能將learning_logs的URL和專案中的其他URL區分開來
]
現在我們要在learning_logs
資料夾內建立第二個urls.py檔
from django.conf.urls import url # 匯入url函式,需要用它來映對到URL視窗
from . import views # 匯入views模組,其中句點是讓python從目前的urls.py模組所在的資料夾中匯入視窗
urlpatterns = [
url(r'^$', views.index, name='index'), # 此函式接受三個引數來處理,第一個引數是正規表示式,第二個引數指定要呼叫的函式視窗,第三個引數把這個URL模式的名稱指定為index
]
視圖函式從請求中取得的資訊,準備好生成網頁所需的資料後,再把這些資料傳送到瀏覽器,一般是透過使用定義頁面外觀的模板來處理
打開learning_logs中的views.py,這個檔案室我們在執行startapp命令時自動生成的,當URL請求與剛才定義的模式比對符合時,Django會在views.py檔尋找index函式,再將請求物件傳給視圖函式,我們現在要在裡面新增一個render函式,在這裡render函式包含兩個引數,原始請求物件和一個可用來建立網頁的模板,如下
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request, 'learning_logs/index.html')
模板設定了網頁的架構,在learning_logs資料夾內建立一個名為templates的資料夾,在templates資料夾中再建立一個名為learning_logs資料夾,這樣建立或許有點多餘,但讓Django有一個清楚明確的結構
我們現在要在最裡面的learning_logs資料夾建立一個index.html檔,然後在裡面編寫程式碼
開啟index.html
<p> hello,this is weiting's learning_log </p>
然後再開啟我們原本的http://localhost:8000/ 就會看到下圖
附上排版較精美的
HackMD網址:https://hackmd.io/9hERbJo3R7ec46gMs5ldGQ?both
資料來源:<<python程式設計的樂趣>>-Eric Matthes著/H&C譯
您好,我跟隨教學Day21-Day23都很順利,到Day24在learning_log\urls.py修改後出現報錯,後來發現應該是Django改版的緣故,依照這篇的方法修改後就可順利執行,供參考~